/*
 * 处理服务端返回的异常状态码
 */
var statusCodeHandler = {
    404: function() {
        alert("找不到您所请求的功能！");
    },
    500: function() {
        alert("服务暂不可用，请稍后重试！");
    },
    403: function() {
        alert("您无权使用该功能！");
    },
    408: function() {
        alert("网页超时，请重新登录！");
    }
};
/*
 * 通过jQuery提交的ajax请求失败时的回调函数
 * jq 1.12及以上版本, handler接口变更, 前面多了一个参数event
 */
function jQueryAjaxErrorHandler(handlers) {
    return function (event, jq, textStatus, errorThrown) {
        switch(jq.status) {
            case 401:
                if(handlers == null || handlers['401'] == null) {
                    $.messager.alert("系统提示","身份验证失败！<br>可能为网页超时，请重新登录后再试！","error");
                } else {
                    handlers['401']();
                }
                break;
            case 403:
                if(handlers == null || handlers['403'] == null) {
                    $.messager.alert("系统提示","您无权使用该功能！","error");
                } else {
                    handlers['403']();
                }
                break;
            case 404:
                if(handlers == null || handlers['404'] == null) {
                    $.messager.alert("系统提示","找不到您所请求的功能！","error");
                } else {
                    handlers['404']();
                }
                break;
            case 408:
                if(handlers == null || handlers['408'] == null) {
                    $.messager.alert("系统提示","您还未登录，或网页超时，请重新登录！","error");
                } else {
                    handlers['408']();
                }
                break;
            case 500:
                if(handlers == null || handlers['500'] == null) {
                    $.messager.alert("系统提示","服务暂不可用，请稍后重试！","error");
                } else {
                    handlers['500']();
                }
                break;
            default:
                $.messager.alert("系统提示","服务暂不可用，请稍后重试！","error");
        }
    };
}

//表单验证
//自定义方法一：本地验证
$.extend($.fn.validatebox.defaults.rules, {  
    custom_reg: {  
        validator: function(value, param) {  
            var m_reg = new RegExp(param[0]);//传递过来的正则字符串中的"\"必须是"\\"  
            if (!m_reg.test(value)) {  
                $.fn.validatebox.defaults.rules.custom_reg.message = param[1];  
                return false;  
            }  
            else {  
                return true;  
            }  
        },  
        message: ''  
    }  
});  
//自定义方法二：远程验证
$.extend($.fn.validatebox.defaults.rules, {  
    custom_remote: {  
        validator: function(value, param) {  
            var postdata = {};  
            postdata[param[1]] = value;  
            var m_result =$.ajax({
                type: "POST",//http请求方式  
                url: param[0],    //服务器段url地址  
                data:postdata,      //发送给服务器段的数据  
                dataType: "json", //告诉JQuery返回的数据格式  
                async: false  
            }).responseText;  
            var r = jQuery.parseJSON(m_result);
            if (!r.result) {  
                $.fn.validatebox.defaults.rules.custom_remote.message =r.message;  
                return false;  
            }  
            else {  
                return true;  
            }  
        },  
        message: ''  
    }  
});
//自定义方法三：先本地验证（一种）再远程验证
$.extend($.fn.validatebox.defaults.rules, {  
    Composite_validation:  
    {  
        validator: function(value, param) {  
            var m_reg = new RegExp(param[0]); //传递过来的正则字符串中的"\"必须是"\\"  
            if (!m_reg.test(value)) {  
                $.fn.validatebox.defaults.rules.Composite_validation.message = param[1];  
                return false;  
            }  
            else {  
                var postdata = {};  
                postdata[param[3]] = value;
                var result = $.ajax({  
                    url: param[2],  
                    data: postdata,  
                    async: false,  
                    type: "post"
                }).responseText;  
                //将result转为json对象
                var vr = jQuery.parseJSON(result);
                if (!vr.ifPass) { 
                    $.fn.validatebox.defaults.rules.Composite_validation.message = param[4];  
                    return false;  
                }  
                else {  
                    return true;  
                }  
            }  
        },  
        message: ''  
    }  
});
